home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2001 September / PC-WELT 9-2001.ISO / software / hw / brennen / flask_src.exe / Audio / MPEG / hufftbl.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-06  |  46.4 KB  |  672 lines

  1. /* 
  2.  *  hufftbl.cpp
  3.  *
  4.  *  Code from
  5.  *            NekoAmp 1.3 decoder by Avery Lee
  6.  *
  7.  *  FlasKMPEG
  8.  *    Copyright (C) Alberto Vigata - January 2000
  9.  *
  10.  *  This file is part of FlasKMPEG, a free MPEG to MPEG/AVI converter
  11.  *    
  12.  *  FlasKMPEG is free software; you can redistribute it and/or modify
  13.  *  it under the terms of the GNU General Public License as published by
  14.  *  the Free Software Foundation; either version 2, or (at your option)
  15.  *  any later version.
  16.  *   
  17.  *  FlasKMPEG is distributed in the hope that it will be useful,
  18.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20.  *  GNU General Public License for more details.
  21.  *   
  22.  *  You should have received a copy of the GNU General Public License
  23.  *  along with GNU Make; see the file COPYING.  If not, write to
  24.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  25.  *
  26.  */
  27.  
  28. #include <crtdbg.h>
  29. #include "AMPDecoder.h"
  30.  
  31. typedef unsigned char byte;
  32.  
  33. const byte hufftbl_1[][2]={
  34.     0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x10, 0x02, 0x01, 0x00, 0x01, 0x00, 0x11, 
  35. };
  36.  
  37. const byte hufftbl_2[][2]={
  38.     0x02, 0x01, 0x00, 0x00, 0x04, 0x01, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 0x00, 0x21, 
  39.     0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x02, 0x00, 0x22, 
  40. };
  41.  
  42. const byte hufftbl_3[][2]={
  43.     0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x02, 0x01, 0x00, 0x10, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 0x00, 0x21, 
  44.     0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x02, 0x00, 0x22, 
  45. };
  46.  
  47. const byte hufftbl_5[][2]={
  48.     0x02, 0x01, 0x00, 0x00, 0x04, 0x01, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  49.     0x00, 0x02, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x22, 0x00, 0x30, 0x02, 0x01, 0x00, 0x03, 0x00, 0x13, 
  50.     0x02, 0x01, 0x00, 0x31, 0x02, 0x01, 0x00, 0x32, 0x02, 0x01, 0x00, 0x23, 0x00, 0x33, 
  51. };
  52.  
  53. const byte hufftbl_6[][2]={
  54.     0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x11, 0x06, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x20, 0x00, 0x21, 
  55.     0x06, 0x01, 0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x02, 0x00, 0x22, 0x04, 0x01, 0x02, 0x01, 0x00, 0x31, 0x00, 0x13, 0x04, 0x01, 0x02, 0x01, 
  56.     0x00, 0x30, 0x00, 0x32, 0x02, 0x01, 0x00, 0x23, 0x02, 0x01, 0x00, 0x03, 0x00, 0x33, 
  57. };
  58.  
  59. const byte hufftbl_7[][2]={
  60.     0x02, 0x01, 0x00, 0x00, 0x04, 0x01, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  61.     0x00, 0x02, 0x00, 0x21, 0x12, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x22, 0x00, 0x30, 0x04, 0x01, 0x02, 0x01, 0x00, 0x31, 
  62.     0x00, 0x13, 0x04, 0x01, 0x02, 0x01, 0x00, 0x03, 0x00, 0x32, 0x02, 0x01, 0x00, 0x23, 0x00, 0x04, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x40, 
  63.     0x00, 0x41, 0x02, 0x01, 0x00, 0x14, 0x02, 0x01, 0x00, 0x42, 0x00, 0x24, 0x0c, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x33, 0x00, 0x43, 
  64.     0x00, 0x50, 0x04, 0x01, 0x02, 0x01, 0x00, 0x34, 0x00, 0x05, 0x00, 0x51, 0x06, 0x01, 0x02, 0x01, 0x00, 0x15, 0x02, 0x01, 0x00, 0x52, 0x00, 0x25, 
  65.     0x04, 0x01, 0x02, 0x01, 0x00, 0x44, 0x00, 0x35, 0x04, 0x01, 0x02, 0x01, 0x00, 0x53, 0x00, 0x54, 0x02, 0x01, 0x00, 0x45, 0x00, 0x55, 
  66. };
  67.  
  68. const byte hufftbl_8[][2]={
  69.     0x06, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 
  70.     0x0e, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 0x00, 0x02, 0x02, 0x01, 0x00, 0x22, 0x04, 0x01, 0x02, 0x01, 0x00, 0x30, 0x00, 0x03, 0x02, 0x01, 
  71.     0x00, 0x31, 0x00, 0x13, 0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x02, 0x01, 0x00, 0x40, 0x00, 0x04, 0x02, 0x01, 
  72.     0x00, 0x41, 0x02, 0x01, 0x00, 0x14, 0x00, 0x42, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x24, 0x02, 0x01, 0x00, 0x33, 0x00, 0x50, 0x04, 0x01, 
  73.     0x02, 0x01, 0x00, 0x43, 0x00, 0x34, 0x00, 0x51, 0x06, 0x01, 0x02, 0x01, 0x00, 0x15, 0x02, 0x01, 0x00, 0x05, 0x00, 0x52, 0x06, 0x01, 0x02, 0x01, 
  74.     0x00, 0x25, 0x02, 0x01, 0x00, 0x44, 0x00, 0x35, 0x02, 0x01, 0x00, 0x53, 0x02, 0x01, 0x00, 0x45, 0x02, 0x01, 0x00, 0x54, 0x00, 0x55, 
  75. };
  76.  
  77. const byte hufftbl_9[][2]={
  78.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x10, 0x02, 0x01, 0x00, 0x01, 0x00, 0x11, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  79.     0x00, 0x21, 0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x02, 0x00, 0x22, 0x0c, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x30, 0x00, 0x03, 
  80.     0x00, 0x31, 0x02, 0x01, 0x00, 0x13, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x41, 0x00, 0x14, 0x04, 0x01, 
  81.     0x02, 0x01, 0x00, 0x40, 0x00, 0x33, 0x02, 0x01, 0x00, 0x42, 0x00, 0x24, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x04, 0x00, 0x50, 
  82.     0x00, 0x43, 0x02, 0x01, 0x00, 0x34, 0x00, 0x51, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x15, 0x00, 0x52, 0x02, 0x01, 0x00, 0x25, 0x00, 0x44, 
  83.     0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x05, 0x00, 0x54, 0x00, 0x53, 0x02, 0x01, 0x00, 0x35, 0x02, 0x01, 0x00, 0x45, 0x00, 0x55, 
  84. };
  85.  
  86. const byte hufftbl_10[][2]={
  87.     0x02, 0x01, 0x00, 0x00, 0x04, 0x01, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x0a, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  88.     0x00, 0x02, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x1c, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x22, 0x00, 0x30, 0x02, 0x01, 0x00, 0x31, 
  89.     0x00, 0x13, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x03, 0x00, 0x32, 0x02, 0x01, 0x00, 0x23, 0x00, 0x40, 0x04, 0x01, 0x02, 0x01, 0x00, 0x41, 
  90.     0x00, 0x14, 0x04, 0x01, 0x02, 0x01, 0x00, 0x04, 0x00, 0x33, 0x02, 0x01, 0x00, 0x42, 0x00, 0x24, 0x1c, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 
  91.     0x02, 0x01, 0x00, 0x50, 0x00, 0x05, 0x00, 0x60, 0x02, 0x01, 0x00, 0x61, 0x00, 0x16, 0x0c, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x43, 
  92.     0x00, 0x34, 0x00, 0x51, 0x02, 0x01, 0x00, 0x15, 0x02, 0x01, 0x00, 0x52, 0x00, 0x25, 0x04, 0x01, 0x02, 0x01, 0x00, 0x26, 0x00, 0x36, 0x00, 0x71, 
  93.     0x14, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0x17, 0x04, 0x01, 0x02, 0x01, 0x00, 0x44, 0x00, 0x53, 0x00, 0x06, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 
  94.     0x00, 0x35, 0x00, 0x45, 0x00, 0x62, 0x02, 0x01, 0x00, 0x70, 0x02, 0x01, 0x00, 0x07, 0x00, 0x64, 0x0e, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x72, 
  95.     0x00, 0x27, 0x06, 0x01, 0x02, 0x01, 0x00, 0x63, 0x02, 0x01, 0x00, 0x54, 0x00, 0x55, 0x02, 0x01, 0x00, 0x46, 0x00, 0x73, 0x08, 0x01, 0x04, 0x01, 
  96.     0x02, 0x01, 0x00, 0x37, 0x00, 0x65, 0x02, 0x01, 0x00, 0x56, 0x00, 0x74, 0x06, 0x01, 0x02, 0x01, 0x00, 0x47, 0x02, 0x01, 0x00, 0x66, 0x00, 0x75, 
  97.     0x04, 0x01, 0x02, 0x01, 0x00, 0x57, 0x00, 0x76, 0x02, 0x01, 0x00, 0x67, 0x00, 0x77, 
  98. };
  99.  
  100. const byte hufftbl_11[][2]={
  101.     0x06, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  102.     0x00, 0x02, 0x00, 0x12, 0x18, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0x21, 0x02, 0x01, 0x00, 0x22, 0x02, 0x01, 0x00, 0x30, 0x00, 0x03, 0x04, 0x01, 
  103.     0x02, 0x01, 0x00, 0x31, 0x00, 0x13, 0x04, 0x01, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x04, 0x01, 0x02, 0x01, 0x00, 0x40, 0x00, 0x04, 0x02, 0x01, 
  104.     0x00, 0x41, 0x00, 0x14, 0x1e, 0x01, 0x10, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x42, 0x00, 0x24, 0x04, 0x01, 0x02, 0x01, 0x00, 0x33, 
  105.     0x00, 0x43, 0x00, 0x50, 0x04, 0x01, 0x02, 0x01, 0x00, 0x34, 0x00, 0x51, 0x00, 0x61, 0x06, 0x01, 0x02, 0x01, 0x00, 0x16, 0x02, 0x01, 0x00, 0x06, 
  106.     0x00, 0x26, 0x02, 0x01, 0x00, 0x62, 0x02, 0x01, 0x00, 0x15, 0x02, 0x01, 0x00, 0x05, 0x00, 0x52, 0x10, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 
  107.     0x02, 0x01, 0x00, 0x25, 0x00, 0x44, 0x00, 0x60, 0x02, 0x01, 0x00, 0x63, 0x00, 0x36, 0x04, 0x01, 0x02, 0x01, 0x00, 0x70, 0x00, 0x17, 0x00, 0x71, 
  108.     0x10, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x07, 0x00, 0x64, 0x00, 0x72, 0x02, 0x01, 0x00, 0x27, 0x04, 0x01, 0x02, 0x01, 0x00, 0x53, 
  109.     0x00, 0x35, 0x02, 0x01, 0x00, 0x54, 0x00, 0x45, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x46, 0x00, 0x73, 0x02, 0x01, 0x00, 0x37, 0x02, 0x01, 
  110.     0x00, 0x65, 0x00, 0x56, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x55, 0x00, 0x57, 0x00, 0x74, 0x02, 0x01, 0x00, 0x47, 0x00, 0x66, 
  111.     0x04, 0x01, 0x02, 0x01, 0x00, 0x75, 0x00, 0x76, 0x02, 0x01, 0x00, 0x67, 0x00, 0x77, 
  112. };
  113.  
  114. const byte hufftbl_12[][2]={
  115.     0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x20, 0x00, 0x02, 
  116.     0x10, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x04, 0x01, 0x02, 0x01, 0x00, 0x22, 0x00, 0x31, 0x02, 0x01, 0x00, 0x13, 0x02, 0x01, 
  117.     0x00, 0x30, 0x02, 0x01, 0x00, 0x03, 0x00, 0x40, 0x1a, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x02, 0x01, 0x00, 0x41, 
  118.     0x00, 0x33, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x14, 0x00, 0x42, 0x02, 0x01, 0x00, 0x24, 0x02, 0x01, 0x00, 0x04, 0x00, 0x50, 0x04, 0x01, 
  119.     0x02, 0x01, 0x00, 0x43, 0x00, 0x34, 0x02, 0x01, 0x00, 0x51, 0x00, 0x15, 0x1c, 0x01, 0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x52, 
  120.     0x00, 0x25, 0x02, 0x01, 0x00, 0x53, 0x00, 0x35, 0x04, 0x01, 0x02, 0x01, 0x00, 0x60, 0x00, 0x16, 0x00, 0x61, 0x04, 0x01, 0x02, 0x01, 0x00, 0x62, 
  121.     0x00, 0x26, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x05, 0x00, 0x06, 0x00, 0x44, 0x02, 0x01, 0x00, 0x54, 0x00, 0x45, 0x12, 0x01, 0x0a, 0x01, 
  122.     0x04, 0x01, 0x02, 0x01, 0x00, 0x63, 0x00, 0x36, 0x04, 0x01, 0x02, 0x01, 0x00, 0x70, 0x00, 0x07, 0x00, 0x71, 0x04, 0x01, 0x02, 0x01, 0x00, 0x17, 
  123.     0x00, 0x64, 0x02, 0x01, 0x00, 0x46, 0x00, 0x72, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x27, 0x02, 0x01, 0x00, 0x55, 0x00, 0x73, 0x02, 0x01, 
  124.     0x00, 0x37, 0x00, 0x56, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x65, 0x00, 0x74, 0x02, 0x01, 0x00, 0x47, 0x00, 0x66, 0x04, 0x01, 0x02, 0x01, 
  125.     0x00, 0x75, 0x00, 0x57, 0x02, 0x01, 0x00, 0x76, 0x02, 0x01, 0x00, 0x67, 0x00, 0x77, 
  126. };
  127.  
  128. const byte hufftbl_13[][2]={
  129.     0x02, 0x01, 0x00, 0x00, 0x06, 0x01, 0x02, 0x01, 0x00, 0x10, 0x02, 0x01, 0x00, 0x01, 0x00, 0x11, 0x1c, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  130.     0x00, 0x20, 0x00, 0x02, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x22, 0x00, 0x30, 0x02, 0x01, 0x00, 0x03, 
  131.     0x00, 0x31, 0x06, 0x01, 0x02, 0x01, 0x00, 0x13, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x04, 0x01, 0x02, 0x01, 0x00, 0x40, 0x00, 0x04, 0x00, 0x41, 
  132.     0x46, 0x01, 0x1c, 0x01, 0x0e, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x14, 0x02, 0x01, 0x00, 0x33, 0x00, 0x42, 0x04, 0x01, 0x02, 0x01, 0x00, 0x24, 
  133.     0x00, 0x50, 0x02, 0x01, 0x00, 0x43, 0x00, 0x34, 0x04, 0x01, 0x02, 0x01, 0x00, 0x51, 0x00, 0x15, 0x04, 0x01, 0x02, 0x01, 0x00, 0x05, 0x00, 0x52, 
  134.     0x02, 0x01, 0x00, 0x25, 0x02, 0x01, 0x00, 0x44, 0x00, 0x53, 0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x60, 0x00, 0x06, 0x02, 0x01, 
  135.     0x00, 0x61, 0x00, 0x16, 0x04, 0x01, 0x02, 0x01, 0x00, 0x80, 0x00, 0x08, 0x00, 0x81, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x35, 
  136.     0x00, 0x62, 0x02, 0x01, 0x00, 0x26, 0x00, 0x54, 0x04, 0x01, 0x02, 0x01, 0x00, 0x45, 0x00, 0x63, 0x02, 0x01, 0x00, 0x36, 0x00, 0x70, 0x06, 0x01, 
  137.     0x04, 0x01, 0x02, 0x01, 0x00, 0x07, 0x00, 0x55, 0x00, 0x71, 0x02, 0x01, 0x00, 0x17, 0x02, 0x01, 0x00, 0x27, 0x00, 0x37, 0x48, 0x01, 0x18, 0x01, 
  138.     0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x18, 0x00, 0x82, 0x02, 0x01, 0x00, 0x28, 0x04, 0x01, 0x02, 0x01, 0x00, 0x64, 0x00, 0x46, 0x00, 0x72, 
  139.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x84, 0x00, 0x48, 0x02, 0x01, 0x00, 0x90, 0x00, 0x09, 0x02, 0x01, 0x00, 0x91, 0x00, 0x19, 0x18, 0x01, 
  140.     0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x73, 0x00, 0x65, 0x02, 0x01, 0x00, 0x56, 0x00, 0x74, 0x04, 0x01, 0x02, 0x01, 0x00, 0x47, 
  141.     0x00, 0x66, 0x00, 0x83, 0x06, 0x01, 0x02, 0x01, 0x00, 0x38, 0x02, 0x01, 0x00, 0x75, 0x00, 0x57, 0x02, 0x01, 0x00, 0x92, 0x00, 0x29, 0x0e, 0x01, 
  142.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x67, 0x00, 0x85, 0x02, 0x01, 0x00, 0x58, 0x00, 0x39, 0x02, 0x01, 0x00, 0x93, 0x02, 0x01, 0x00, 0x49, 
  143.     0x00, 0x86, 0x06, 0x01, 0x02, 0x01, 0x00, 0xa0, 0x02, 0x01, 0x00, 0x68, 0x00, 0x0a, 0x02, 0x01, 0x00, 0xa1, 0x00, 0x1a, 0x44, 0x01, 0x18, 0x01, 
  144.     0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa2, 0x00, 0x2a, 0x04, 0x01, 0x02, 0x01, 0x00, 0x95, 0x00, 0x59, 0x02, 0x01, 0x00, 0xa3, 0x00, 0x3a, 
  145.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x4a, 0x00, 0x96, 0x02, 0x01, 0x00, 0xb0, 0x00, 0x0b, 0x02, 0x01, 0x00, 0xb1, 0x00, 0x1b, 0x14, 0x01, 
  146.     0x08, 0x01, 0x02, 0x01, 0x00, 0xb2, 0x04, 0x01, 0x02, 0x01, 0x00, 0x76, 0x00, 0x77, 0x00, 0x94, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x87, 
  147.     0x00, 0x78, 0x00, 0xa4, 0x04, 0x01, 0x02, 0x01, 0x00, 0x69, 0x00, 0xa5, 0x00, 0x2b, 0x0c, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x5a, 
  148.     0x00, 0x88, 0x00, 0xb3, 0x02, 0x01, 0x00, 0x3b, 0x02, 0x01, 0x00, 0x79, 0x00, 0xa6, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x6a, 0x00, 0xb4, 
  149.     0x00, 0xc0, 0x04, 0x01, 0x02, 0x01, 0x00, 0x0c, 0x00, 0x98, 0x00, 0xc1, 0x3c, 0x01, 0x16, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x1c, 
  150.     0x02, 0x01, 0x00, 0x89, 0x00, 0xb5, 0x02, 0x01, 0x00, 0x5b, 0x00, 0xc2, 0x04, 0x01, 0x02, 0x01, 0x00, 0x2c, 0x00, 0x3c, 0x04, 0x01, 0x02, 0x01, 
  151.     0x00, 0xb6, 0x00, 0x6b, 0x02, 0x01, 0x00, 0xc4, 0x00, 0x4c, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa8, 0x00, 0x8a, 0x02, 0x01, 
  152.     0x00, 0xd0, 0x00, 0x0d, 0x02, 0x01, 0x00, 0xd1, 0x02, 0x01, 0x00, 0x4b, 0x02, 0x01, 0x00, 0x97, 0x00, 0xa7, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 
  153.     0x00, 0xc3, 0x02, 0x01, 0x00, 0x7a, 0x00, 0x99, 0x04, 0x01, 0x02, 0x01, 0x00, 0xc5, 0x00, 0x5c, 0x00, 0xb7, 0x04, 0x01, 0x02, 0x01, 0x00, 0x1d, 
  154.     0x00, 0xd2, 0x02, 0x01, 0x00, 0x2d, 0x02, 0x01, 0x00, 0x7b, 0x00, 0xd3, 0x34, 0x01, 0x1c, 0x01, 0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x3d, 
  155.     0x00, 0xc6, 0x04, 0x01, 0x02, 0x01, 0x00, 0x6c, 0x00, 0xa9, 0x02, 0x01, 0x00, 0x9a, 0x00, 0xd4, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb8, 
  156.     0x00, 0x8b, 0x02, 0x01, 0x00, 0x4d, 0x00, 0xc7, 0x04, 0x01, 0x02, 0x01, 0x00, 0x7c, 0x00, 0xd5, 0x02, 0x01, 0x00, 0x5d, 0x00, 0xe0, 0x0a, 0x01, 
  157.     0x04, 0x01, 0x02, 0x01, 0x00, 0xe1, 0x00, 0x1e, 0x04, 0x01, 0x02, 0x01, 0x00, 0x0e, 0x00, 0x2e, 0x00, 0xe2, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  158.     0x00, 0xe3, 0x00, 0x6d, 0x02, 0x01, 0x00, 0x8c, 0x00, 0xe4, 0x04, 0x01, 0x02, 0x01, 0x00, 0xe5, 0x00, 0xba, 0x00, 0xf0, 0x26, 0x01, 0x10, 0x01, 
  159.     0x04, 0x01, 0x02, 0x01, 0x00, 0xf1, 0x00, 0x1f, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xaa, 0x00, 0x9b, 0x00, 0xb9, 0x02, 0x01, 0x00, 0x3e, 
  160.     0x02, 0x01, 0x00, 0xd6, 0x00, 0xc8, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x4e, 0x02, 0x01, 0x00, 0xd7, 0x00, 0x7d, 0x02, 0x01, 0x00, 0xab, 
  161.     0x02, 0x01, 0x00, 0x5e, 0x00, 0xc9, 0x06, 0x01, 0x02, 0x01, 0x00, 0x0f, 0x02, 0x01, 0x00, 0x9c, 0x00, 0x6e, 0x02, 0x01, 0x00, 0xf2, 0x00, 0x2f, 
  162.     0x20, 0x01, 0x10, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd8, 0x00, 0x8d, 0x00, 0x3f, 0x06, 0x01, 0x02, 0x01, 0x00, 0xf3, 0x02, 0x01, 
  163.     0x00, 0xe6, 0x00, 0xca, 0x02, 0x01, 0x00, 0xf4, 0x00, 0x4f, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xbb, 0x00, 0xac, 0x02, 0x01, 0x00, 0xe7, 
  164.     0x00, 0xf5, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd9, 0x00, 0x9d, 0x02, 0x01, 0x00, 0x5f, 0x00, 0xe8, 0x1e, 0x01, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 
  165.     0x00, 0x6f, 0x02, 0x01, 0x00, 0xf6, 0x00, 0xcb, 0x04, 0x01, 0x02, 0x01, 0x00, 0xbc, 0x00, 0xad, 0x00, 0xda, 0x08, 0x01, 0x02, 0x01, 0x00, 0xf7, 
  166.     0x04, 0x01, 0x02, 0x01, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x8e, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xcc, 0x02, 0x01, 
  167.     0x00, 0xf8, 0x00, 0x8f, 0x12, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xdb, 0x00, 0xbd, 0x02, 0x01, 0x00, 0xea, 0x00, 0xf9, 0x04, 0x01, 
  168.     0x02, 0x01, 0x00, 0x9f, 0x00, 0xeb, 0x02, 0x01, 0x00, 0xbe, 0x02, 0x01, 0x00, 0xcd, 0x00, 0xfa, 0x0e, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xdd, 
  169.     0x00, 0xec, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xe9, 0x00, 0xaf, 0x00, 0xdc, 0x02, 0x01, 0x00, 0xce, 0x00, 0xfb, 0x08, 0x01, 0x04, 0x01, 
  170.     0x02, 0x01, 0x00, 0xbf, 0x00, 0xde, 0x02, 0x01, 0x00, 0xcf, 0x00, 0xee, 0x04, 0x01, 0x02, 0x01, 0x00, 0xdf, 0x00, 0xef, 0x02, 0x01, 0x00, 0xff, 
  171.     0x02, 0x01, 0x00, 0xed, 0x02, 0x01, 0x00, 0xfd, 0x02, 0x01, 0x00, 0xfc, 0x00, 0xfe, 
  172. };
  173.  
  174. const byte hufftbl_15[][2]={
  175.     0x10, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  176.     0x00, 0x02, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x32, 0x01, 0x10, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x22, 0x02, 0x01, 0x00, 0x30, 0x00, 0x31, 
  177.     0x06, 0x01, 0x02, 0x01, 0x00, 0x13, 0x02, 0x01, 0x00, 0x03, 0x00, 0x40, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x0e, 0x01, 0x06, 0x01, 0x04, 0x01, 
  178.     0x02, 0x01, 0x00, 0x04, 0x00, 0x14, 0x00, 0x41, 0x04, 0x01, 0x02, 0x01, 0x00, 0x33, 0x00, 0x42, 0x02, 0x01, 0x00, 0x24, 0x00, 0x43, 0x0a, 0x01, 
  179.     0x06, 0x01, 0x02, 0x01, 0x00, 0x34, 0x02, 0x01, 0x00, 0x50, 0x00, 0x05, 0x02, 0x01, 0x00, 0x51, 0x00, 0x15, 0x04, 0x01, 0x02, 0x01, 0x00, 0x52, 
  180.     0x00, 0x25, 0x04, 0x01, 0x02, 0x01, 0x00, 0x44, 0x00, 0x53, 0x00, 0x61, 0x5a, 0x01, 0x24, 0x01, 0x12, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 
  181.     0x00, 0x35, 0x02, 0x01, 0x00, 0x60, 0x00, 0x06, 0x02, 0x01, 0x00, 0x16, 0x00, 0x62, 0x04, 0x01, 0x02, 0x01, 0x00, 0x26, 0x00, 0x54, 0x02, 0x01, 
  182.     0x00, 0x45, 0x00, 0x63, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x36, 0x02, 0x01, 0x00, 0x70, 0x00, 0x07, 0x02, 0x01, 0x00, 0x71, 0x00, 0x55, 
  183.     0x04, 0x01, 0x02, 0x01, 0x00, 0x17, 0x00, 0x64, 0x02, 0x01, 0x00, 0x72, 0x00, 0x27, 0x18, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  184.     0x00, 0x46, 0x00, 0x73, 0x02, 0x01, 0x00, 0x37, 0x00, 0x65, 0x04, 0x01, 0x02, 0x01, 0x00, 0x56, 0x00, 0x80, 0x02, 0x01, 0x00, 0x08, 0x00, 0x74, 
  185.     0x04, 0x01, 0x02, 0x01, 0x00, 0x81, 0x00, 0x18, 0x02, 0x01, 0x00, 0x82, 0x00, 0x28, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x47, 
  186.     0x00, 0x66, 0x02, 0x01, 0x00, 0x83, 0x00, 0x38, 0x04, 0x01, 0x02, 0x01, 0x00, 0x75, 0x00, 0x57, 0x02, 0x01, 0x00, 0x84, 0x00, 0x48, 0x06, 0x01, 
  187.     0x04, 0x01, 0x02, 0x01, 0x00, 0x90, 0x00, 0x19, 0x00, 0x91, 0x04, 0x01, 0x02, 0x01, 0x00, 0x92, 0x00, 0x76, 0x02, 0x01, 0x00, 0x67, 0x00, 0x29, 
  188.     0x5c, 0x01, 0x24, 0x01, 0x12, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x85, 0x00, 0x58, 0x04, 0x01, 0x02, 0x01, 0x00, 0x09, 0x00, 0x77, 
  189.     0x00, 0x93, 0x04, 0x01, 0x02, 0x01, 0x00, 0x39, 0x00, 0x94, 0x02, 0x01, 0x00, 0x49, 0x00, 0x86, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x68, 
  190.     0x02, 0x01, 0x00, 0xa0, 0x00, 0x0a, 0x02, 0x01, 0x00, 0xa1, 0x00, 0x1a, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa2, 0x00, 0x2a, 0x02, 0x01, 0x00, 0x95, 
  191.     0x00, 0x59, 0x1a, 0x01, 0x0e, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0xa3, 0x02, 0x01, 0x00, 0x3a, 0x00, 0x87, 0x04, 0x01, 0x02, 0x01, 0x00, 0x78, 
  192.     0x00, 0xa4, 0x02, 0x01, 0x00, 0x4a, 0x00, 0x96, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x69, 0x00, 0xb0, 0x00, 0xb1, 0x04, 0x01, 0x02, 0x01, 
  193.     0x00, 0x1b, 0x00, 0xa5, 0x00, 0xb2, 0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x5a, 0x00, 0x2b, 0x02, 0x01, 0x00, 0x88, 0x00, 0x97, 
  194.     0x02, 0x01, 0x00, 0xb3, 0x02, 0x01, 0x00, 0x79, 0x00, 0x3b, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x6a, 0x00, 0xb4, 0x02, 0x01, 0x00, 0x4b, 
  195.     0x00, 0xc1, 0x04, 0x01, 0x02, 0x01, 0x00, 0x98, 0x00, 0x89, 0x02, 0x01, 0x00, 0x1c, 0x00, 0xb5, 0x50, 0x01, 0x22, 0x01, 0x10, 0x01, 0x06, 0x01, 
  196.     0x04, 0x01, 0x02, 0x01, 0x00, 0x5b, 0x00, 0x2c, 0x00, 0xc2, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x0b, 0x00, 0xc0, 0x00, 0xa6, 0x02, 0x01, 
  197.     0x00, 0xa7, 0x00, 0x7a, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xc3, 0x00, 0x3c, 0x04, 0x01, 0x02, 0x01, 0x00, 0x0c, 0x00, 0x99, 0x00, 0xb6, 
  198.     0x04, 0x01, 0x02, 0x01, 0x00, 0x6b, 0x00, 0xc4, 0x02, 0x01, 0x00, 0x4c, 0x00, 0xa8, 0x14, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x8a, 
  199.     0x00, 0xc5, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd0, 0x00, 0x5c, 0x00, 0xd1, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb7, 0x00, 0x7b, 0x02, 0x01, 0x00, 0x1d, 
  200.     0x02, 0x01, 0x00, 0x0d, 0x00, 0x2d, 0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd2, 0x00, 0xd3, 0x04, 0x01, 0x02, 0x01, 0x00, 0x3d, 0x00, 0xc6, 
  201.     0x02, 0x01, 0x00, 0x6c, 0x00, 0xa9, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9a, 0x00, 0xb8, 0x00, 0xd4, 0x04, 0x01, 0x02, 0x01, 0x00, 0x8b, 
  202.     0x00, 0x4d, 0x02, 0x01, 0x00, 0xc7, 0x00, 0x7c, 0x44, 0x01, 0x22, 0x01, 0x12, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd5, 0x00, 0x5d, 
  203.     0x04, 0x01, 0x02, 0x01, 0x00, 0xe0, 0x00, 0x0e, 0x00, 0xe1, 0x04, 0x01, 0x02, 0x01, 0x00, 0x1e, 0x00, 0xe2, 0x02, 0x01, 0x00, 0xaa, 0x00, 0x2e, 
  204.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb9, 0x00, 0x9b, 0x02, 0x01, 0x00, 0xe3, 0x00, 0xd6, 0x04, 0x01, 0x02, 0x01, 0x00, 0x6d, 0x00, 0x3e, 
  205.     0x02, 0x01, 0x00, 0xc8, 0x00, 0x8c, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xe4, 0x00, 0x4e, 0x02, 0x01, 0x00, 0xd7, 0x00, 0x7d, 
  206.     0x04, 0x01, 0x02, 0x01, 0x00, 0xe5, 0x00, 0xba, 0x02, 0x01, 0x00, 0xab, 0x00, 0x5e, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xc9, 0x00, 0x9c, 
  207.     0x02, 0x01, 0x00, 0xf1, 0x00, 0x1f, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf0, 0x00, 0x6e, 0x00, 0xf2, 0x02, 0x01, 0x00, 0x2f, 0x00, 0xe6, 
  208.     0x26, 0x01, 0x12, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd8, 0x00, 0xf3, 0x02, 0x01, 0x00, 0x3f, 0x00, 0xf4, 0x06, 0x01, 0x02, 0x01, 
  209.     0x00, 0x4f, 0x02, 0x01, 0x00, 0x8d, 0x00, 0xd9, 0x02, 0x01, 0x00, 0xbb, 0x00, 0xca, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xac, 0x00, 0xe7, 
  210.     0x02, 0x01, 0x00, 0x7e, 0x00, 0xf5, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9d, 0x00, 0x5f, 0x02, 0x01, 0x00, 0xe8, 0x00, 0x8e, 0x02, 0x01, 
  211.     0x00, 0xf6, 0x00, 0xcb, 0x22, 0x01, 0x12, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x0f, 0x00, 0xae, 0x00, 0x6f, 0x02, 0x01, 
  212.     0x00, 0xbc, 0x00, 0xda, 0x04, 0x01, 0x02, 0x01, 0x00, 0xad, 0x00, 0xf7, 0x02, 0x01, 0x00, 0x7f, 0x00, 0xe9, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  213.     0x00, 0x9e, 0x00, 0xcc, 0x02, 0x01, 0x00, 0xf8, 0x00, 0x8f, 0x04, 0x01, 0x02, 0x01, 0x00, 0xdb, 0x00, 0xbd, 0x02, 0x01, 0x00, 0xea, 0x00, 0xf9, 
  214.     0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9f, 0x00, 0xdc, 0x02, 0x01, 0x00, 0xcd, 0x00, 0xeb, 0x04, 0x01, 0x02, 0x01, 0x00, 0xbe, 
  215.     0x00, 0xfa, 0x02, 0x01, 0x00, 0xaf, 0x00, 0xdd, 0x0e, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xec, 0x00, 0xce, 0x00, 0xfb, 0x04, 0x01, 
  216.     0x02, 0x01, 0x00, 0xbf, 0x00, 0xed, 0x02, 0x01, 0x00, 0xde, 0x00, 0xfc, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xcf, 0x00, 0xfd, 0x00, 0xee, 
  217.     0x04, 0x01, 0x02, 0x01, 0x00, 0xdf, 0x00, 0xfe, 0x02, 0x01, 0x00, 0xef, 0x00, 0xff, 
  218. };
  219.  
  220. const byte hufftbl_16[][2]={
  221.     0x02, 0x01, 0x00, 0x00, 0x06, 0x01, 0x02, 0x01, 0x00, 0x10, 0x02, 0x01, 0x00, 0x01, 0x00, 0x11, 0x2a, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  222.     0x00, 0x20, 0x00, 0x02, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x22, 0x02, 0x01, 0x00, 0x30, 0x00, 0x03, 
  223.     0x02, 0x01, 0x00, 0x31, 0x00, 0x13, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x04, 0x01, 0x02, 0x01, 0x00, 0x40, 0x00, 0x04, 
  224.     0x00, 0x41, 0x06, 0x01, 0x02, 0x01, 0x00, 0x14, 0x02, 0x01, 0x00, 0x33, 0x00, 0x42, 0x04, 0x01, 0x02, 0x01, 0x00, 0x24, 0x00, 0x50, 0x02, 0x01, 
  225.     0x00, 0x43, 0x00, 0x34, 0x8a, 0x01, 0x28, 0x01, 0x10, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x05, 0x00, 0x15, 0x00, 0x51, 0x04, 0x01, 
  226.     0x02, 0x01, 0x00, 0x52, 0x00, 0x25, 0x04, 0x01, 0x02, 0x01, 0x00, 0x44, 0x00, 0x35, 0x00, 0x53, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 
  227.     0x00, 0x60, 0x00, 0x06, 0x00, 0x61, 0x02, 0x01, 0x00, 0x16, 0x00, 0x62, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x26, 0x00, 0x54, 0x02, 0x01, 
  228.     0x00, 0x45, 0x00, 0x63, 0x04, 0x01, 0x02, 0x01, 0x00, 0x36, 0x00, 0x70, 0x00, 0x71, 0x28, 0x01, 0x12, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0x17, 
  229.     0x02, 0x01, 0x00, 0x07, 0x02, 0x01, 0x00, 0x55, 0x00, 0x64, 0x04, 0x01, 0x02, 0x01, 0x00, 0x72, 0x00, 0x27, 0x04, 0x01, 0x02, 0x01, 0x00, 0x46, 
  230.     0x00, 0x65, 0x00, 0x73, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x37, 0x02, 0x01, 0x00, 0x56, 0x00, 0x08, 0x02, 0x01, 0x00, 0x80, 0x00, 0x81, 
  231.     0x06, 0x01, 0x02, 0x01, 0x00, 0x18, 0x02, 0x01, 0x00, 0x74, 0x00, 0x47, 0x02, 0x01, 0x00, 0x82, 0x02, 0x01, 0x00, 0x28, 0x00, 0x66, 0x18, 0x01, 
  232.     0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x83, 0x00, 0x38, 0x02, 0x01, 0x00, 0x75, 0x00, 0x84, 0x04, 0x01, 0x02, 0x01, 0x00, 0x48, 
  233.     0x00, 0x90, 0x00, 0x91, 0x06, 0x01, 0x02, 0x01, 0x00, 0x19, 0x02, 0x01, 0x00, 0x09, 0x00, 0x76, 0x02, 0x01, 0x00, 0x92, 0x00, 0x29, 0x0e, 0x01, 
  234.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x85, 0x00, 0x58, 0x02, 0x01, 0x00, 0x93, 0x00, 0x39, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa0, 0x00, 0x0a, 
  235.     0x00, 0x1a, 0x08, 0x01, 0x02, 0x01, 0x00, 0xa2, 0x02, 0x01, 0x00, 0x67, 0x02, 0x01, 0x00, 0x57, 0x00, 0x49, 0x06, 0x01, 0x02, 0x01, 0x00, 0x94, 
  236.     0x02, 0x01, 0x00, 0x77, 0x00, 0x86, 0x02, 0x01, 0x00, 0xa1, 0x02, 0x01, 0x00, 0x68, 0x00, 0x95, 0xdc, 0x01, 0x7e, 0x01, 0x32, 0x01, 0x1a, 0x01, 
  237.     0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x2a, 0x02, 0x01, 0x00, 0x59, 0x00, 0x3a, 0x02, 0x01, 0x00, 0xa3, 0x02, 0x01, 0x00, 0x87, 0x00, 0x78, 
  238.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa4, 0x00, 0x4a, 0x02, 0x01, 0x00, 0x96, 0x00, 0x69, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb0, 0x00, 0x0b, 
  239.     0x00, 0xb1, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x1b, 0x00, 0xb2, 0x02, 0x01, 0x00, 0x2b, 0x02, 0x01, 0x00, 0xa5, 0x00, 0x5a, 0x06, 0x01, 
  240.     0x02, 0x01, 0x00, 0xb3, 0x02, 0x01, 0x00, 0xa6, 0x00, 0x6a, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb4, 0x00, 0x4b, 0x02, 0x01, 0x00, 0x0c, 0x00, 0xc1, 
  241.     0x1e, 0x01, 0x0e, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb5, 0x00, 0xc2, 0x00, 0x2c, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa7, 0x00, 0xc3, 
  242.     0x02, 0x01, 0x00, 0x6b, 0x00, 0xc4, 0x08, 0x01, 0x02, 0x01, 0x00, 0x1d, 0x04, 0x01, 0x02, 0x01, 0x00, 0x88, 0x00, 0x97, 0x00, 0x3b, 0x04, 0x01, 
  243.     0x02, 0x01, 0x00, 0xd1, 0x00, 0xd2, 0x02, 0x01, 0x00, 0x2d, 0x00, 0xd3, 0x12, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x1e, 0x00, 0x2e, 
  244.     0x00, 0xe2, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x79, 0x00, 0x98, 0x00, 0xc0, 0x02, 0x01, 0x00, 0x1c, 0x02, 0x01, 0x00, 0x89, 0x00, 0x5b, 
  245.     0x0e, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x3c, 0x02, 0x01, 0x00, 0x7a, 0x00, 0xb6, 0x04, 0x01, 0x02, 0x01, 0x00, 0x4c, 0x00, 0x99, 0x02, 0x01, 
  246.     0x00, 0xa8, 0x00, 0x8a, 0x06, 0x01, 0x02, 0x01, 0x00, 0x0d, 0x02, 0x01, 0x00, 0xc5, 0x00, 0x5c, 0x04, 0x01, 0x02, 0x01, 0x00, 0x3d, 0x00, 0xc6, 
  247.     0x02, 0x01, 0x00, 0x6c, 0x00, 0x9a, 0x58, 0x01, 0x56, 0x01, 0x24, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x8b, 0x00, 0x4d, 
  248.     0x02, 0x01, 0x00, 0xc7, 0x00, 0x7c, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd5, 0x00, 0x5d, 0x02, 0x01, 0x00, 0xe0, 0x00, 0x0e, 0x08, 0x01, 0x02, 0x01, 
  249.     0x00, 0xe3, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd0, 0x00, 0xb7, 0x00, 0x7b, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa9, 0x00, 0xb8, 0x00, 0xd4, 
  250.     0x02, 0x01, 0x00, 0xe1, 0x02, 0x01, 0x00, 0xaa, 0x00, 0xb9, 0x18, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9b, 0x00, 0xd6, 
  251.     0x00, 0x6d, 0x02, 0x01, 0x00, 0x3e, 0x00, 0xc8, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x8c, 0x00, 0xe4, 0x00, 0x4e, 0x04, 0x01, 0x02, 0x01, 
  252.     0x00, 0xd7, 0x00, 0xe5, 0x02, 0x01, 0x00, 0xba, 0x00, 0xab, 0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9c, 0x00, 0xe6, 0x04, 0x01, 0x02, 0x01, 
  253.     0x00, 0x6e, 0x00, 0xd8, 0x02, 0x01, 0x00, 0x8d, 0x00, 0xbb, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xe7, 0x00, 0x9d, 0x02, 0x01, 0x00, 0xe8, 
  254.     0x00, 0x8e, 0x04, 0x01, 0x02, 0x01, 0x00, 0xcb, 0x00, 0xbc, 0x00, 0x9e, 0x00, 0xf1, 0x02, 0x01, 0x00, 0x1f, 0x02, 0x01, 0x00, 0x0f, 0x00, 0x2f, 
  255.     0x42, 0x01, 0x38, 0x01, 0x02, 0x01, 0x00, 0xf2, 0x34, 0x01, 0x32, 0x01, 0x14, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0xbd, 0x02, 0x01, 0x00, 0x5e, 
  256.     0x02, 0x01, 0x00, 0x7d, 0x00, 0xc9, 0x06, 0x01, 0x02, 0x01, 0x00, 0xca, 0x02, 0x01, 0x00, 0xac, 0x00, 0x7e, 0x04, 0x01, 0x02, 0x01, 0x00, 0xda, 
  257.     0x00, 0xad, 0x00, 0xcc, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0xae, 0x02, 0x01, 0x00, 0xdb, 0x00, 0xdc, 0x02, 0x01, 0x00, 0xcd, 0x00, 0xbe, 
  258.     0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xeb, 0x00, 0xed, 0x00, 0xee, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd9, 0x00, 0xea, 0x00, 0xe9, 
  259.     0x02, 0x01, 0x00, 0xde, 0x04, 0x01, 0x02, 0x01, 0x00, 0xdd, 0x00, 0xec, 0x00, 0xce, 0x00, 0x3f, 0x00, 0xf0, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf3, 
  260.     0x00, 0xf4, 0x02, 0x01, 0x00, 0x4f, 0x02, 0x01, 0x00, 0xf5, 0x00, 0x5f, 0x0a, 0x01, 0x02, 0x01, 0x00, 0xff, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf6, 
  261.     0x00, 0x6f, 0x02, 0x01, 0x00, 0xf7, 0x00, 0x7f, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x8f, 0x02, 0x01, 0x00, 0xf8, 0x00, 0xf9, 0x04, 0x01, 
  262.     0x02, 0x01, 0x00, 0x9f, 0x00, 0xfa, 0x00, 0xaf, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xfb, 0x00, 0xbf, 0x02, 0x01, 0x00, 0xfc, 0x00, 0xcf, 
  263.     0x04, 0x01, 0x02, 0x01, 0x00, 0xfd, 0x00, 0xdf, 0x02, 0x01, 0x00, 0xfe, 0x00, 0xef, 
  264. };
  265.  
  266. const byte hufftbl_24[][2]={
  267.     0x3c, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x10, 0x02, 0x01, 0x00, 0x01, 0x00, 0x11, 0x0e, 0x01, 0x06, 0x01, 0x04, 0x01, 
  268.     0x02, 0x01, 0x00, 0x20, 0x00, 0x02, 0x00, 0x21, 0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x22, 0x02, 0x01, 0x00, 0x30, 0x00, 0x03, 0x0e, 0x01, 
  269.     0x04, 0x01, 0x02, 0x01, 0x00, 0x31, 0x00, 0x13, 0x04, 0x01, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x04, 0x01, 0x02, 0x01, 0x00, 0x40, 0x00, 0x04, 
  270.     0x00, 0x41, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x14, 0x00, 0x33, 0x02, 0x01, 0x00, 0x42, 0x00, 0x24, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 
  271.     0x00, 0x43, 0x00, 0x34, 0x00, 0x51, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x50, 0x00, 0x05, 0x00, 0x15, 0x02, 0x01, 0x00, 0x52, 0x00, 0x25, 
  272.     0xfa, 0x01, 0x62, 0x01, 0x22, 0x01, 0x12, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x44, 0x00, 0x53, 0x02, 0x01, 0x00, 0x35, 0x02, 0x01, 
  273.     0x00, 0x60, 0x00, 0x06, 0x04, 0x01, 0x02, 0x01, 0x00, 0x61, 0x00, 0x16, 0x02, 0x01, 0x00, 0x62, 0x00, 0x26, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  274.     0x00, 0x54, 0x00, 0x45, 0x02, 0x01, 0x00, 0x63, 0x00, 0x36, 0x04, 0x01, 0x02, 0x01, 0x00, 0x71, 0x00, 0x55, 0x02, 0x01, 0x00, 0x64, 0x00, 0x46, 
  275.     0x20, 0x01, 0x0e, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x72, 0x02, 0x01, 0x00, 0x27, 0x00, 0x37, 0x02, 0x01, 0x00, 0x73, 0x04, 0x01, 0x02, 0x01, 
  276.     0x00, 0x70, 0x00, 0x07, 0x00, 0x17, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x65, 0x00, 0x56, 0x04, 0x01, 0x02, 0x01, 0x00, 0x80, 0x00, 0x08, 
  277.     0x00, 0x81, 0x04, 0x01, 0x02, 0x01, 0x00, 0x74, 0x00, 0x47, 0x02, 0x01, 0x00, 0x18, 0x00, 0x82, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  278.     0x00, 0x28, 0x00, 0x66, 0x02, 0x01, 0x00, 0x83, 0x00, 0x38, 0x04, 0x01, 0x02, 0x01, 0x00, 0x75, 0x00, 0x57, 0x02, 0x01, 0x00, 0x84, 0x00, 0x48, 
  279.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x91, 0x00, 0x19, 0x02, 0x01, 0x00, 0x92, 0x00, 0x76, 0x04, 0x01, 0x02, 0x01, 0x00, 0x67, 0x00, 0x29, 
  280.     0x02, 0x01, 0x00, 0x85, 0x00, 0x58, 0x5c, 0x01, 0x22, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x93, 0x00, 0x39, 0x02, 0x01, 
  281.     0x00, 0x94, 0x00, 0x49, 0x04, 0x01, 0x02, 0x01, 0x00, 0x77, 0x00, 0x86, 0x02, 0x01, 0x00, 0x68, 0x00, 0xa1, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  282.     0x00, 0xa2, 0x00, 0x2a, 0x02, 0x01, 0x00, 0x95, 0x00, 0x59, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa3, 0x00, 0x3a, 0x02, 0x01, 0x00, 0x87, 0x02, 0x01, 
  283.     0x00, 0x78, 0x00, 0x4a, 0x16, 0x01, 0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa4, 0x00, 0x96, 0x04, 0x01, 0x02, 0x01, 0x00, 0x69, 0x00, 0xb1, 
  284.     0x02, 0x01, 0x00, 0x1b, 0x00, 0xa5, 0x06, 0x01, 0x02, 0x01, 0x00, 0xb2, 0x02, 0x01, 0x00, 0x5a, 0x00, 0x2b, 0x02, 0x01, 0x00, 0x88, 0x00, 0xb3, 
  285.     0x10, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x90, 0x02, 0x01, 0x00, 0x09, 0x00, 0xa0, 0x02, 0x01, 0x00, 0x97, 0x00, 0x79, 0x04, 0x01, 
  286.     0x02, 0x01, 0x00, 0xa6, 0x00, 0x6a, 0x00, 0xb4, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x1a, 0x02, 0x01, 0x00, 0x0a, 0x00, 0xb0, 0x02, 0x01, 
  287.     0x00, 0x3b, 0x02, 0x01, 0x00, 0x0b, 0x00, 0xc0, 0x04, 0x01, 0x02, 0x01, 0x00, 0x4b, 0x00, 0xc1, 0x02, 0x01, 0x00, 0x98, 0x00, 0x89, 0x43, 0x01, 
  288.     0x22, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x1c, 0x00, 0xb5, 0x02, 0x01, 0x00, 0x5b, 0x00, 0xc2, 0x04, 0x01, 0x02, 0x01, 
  289.     0x00, 0x2c, 0x00, 0xa7, 0x02, 0x01, 0x00, 0x7a, 0x00, 0xc3, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x3c, 0x02, 0x01, 0x00, 0x0c, 0x00, 0xd0, 
  290.     0x02, 0x01, 0x00, 0xb6, 0x00, 0x6b, 0x04, 0x01, 0x02, 0x01, 0x00, 0xc4, 0x00, 0x4c, 0x02, 0x01, 0x00, 0x99, 0x00, 0xa8, 0x10, 0x01, 0x08, 0x01, 
  291.     0x04, 0x01, 0x02, 0x01, 0x00, 0x8a, 0x00, 0xc5, 0x02, 0x01, 0x00, 0x5c, 0x00, 0xd1, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb7, 0x00, 0x7b, 0x02, 0x01, 
  292.     0x00, 0x1d, 0x00, 0xd2, 0x09, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x2d, 0x00, 0xd3, 0x02, 0x01, 0x00, 0x3d, 0x00, 0xc6, 0x55, 0xfa, 0x04, 0x01, 
  293.     0x02, 0x01, 0x00, 0x6c, 0x00, 0xa9, 0x02, 0x01, 0x00, 0x9a, 0x00, 0xd4, 0x20, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb8, 
  294.     0x00, 0x8b, 0x02, 0x01, 0x00, 0x4d, 0x00, 0xc7, 0x04, 0x01, 0x02, 0x01, 0x00, 0x7c, 0x00, 0xd5, 0x02, 0x01, 0x00, 0x5d, 0x00, 0xe1, 0x08, 0x01, 
  295.     0x04, 0x01, 0x02, 0x01, 0x00, 0x1e, 0x00, 0xe2, 0x02, 0x01, 0x00, 0xaa, 0x00, 0xb9, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9b, 0x00, 0xe3, 0x02, 0x01, 
  296.     0x00, 0xd6, 0x00, 0x6d, 0x14, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x3e, 0x02, 0x01, 0x00, 0x2e, 0x00, 0x4e, 0x02, 0x01, 0x00, 0xc8, 
  297.     0x00, 0x8c, 0x04, 0x01, 0x02, 0x01, 0x00, 0xe4, 0x00, 0xd7, 0x04, 0x01, 0x02, 0x01, 0x00, 0x7d, 0x00, 0xab, 0x00, 0xe5, 0x0a, 0x01, 0x04, 0x01, 
  298.     0x02, 0x01, 0x00, 0xba, 0x00, 0x5e, 0x02, 0x01, 0x00, 0xc9, 0x02, 0x01, 0x00, 0x9c, 0x00, 0x6e, 0x08, 0x01, 0x02, 0x01, 0x00, 0xe6, 0x02, 0x01, 
  299.     0x00, 0x0d, 0x02, 0x01, 0x00, 0xe0, 0x00, 0x0e, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd8, 0x00, 0x8d, 0x02, 0x01, 0x00, 0xbb, 0x00, 0xca, 0x4a, 0x01, 
  300.     0x02, 0x01, 0x00, 0xff, 0x40, 0x01, 0x3a, 0x01, 0x20, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xac, 0x00, 0xe7, 0x02, 0x01, 
  301.     0x00, 0x7e, 0x00, 0xd9, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9d, 0x00, 0xe8, 0x02, 0x01, 0x00, 0x8e, 0x00, 0xcb, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  302.     0x00, 0xbc, 0x00, 0xda, 0x02, 0x01, 0x00, 0xad, 0x00, 0xe9, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9e, 0x00, 0xcc, 0x02, 0x01, 0x00, 0xdb, 0x00, 0xbd, 
  303.     0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xea, 0x00, 0xae, 0x02, 0x01, 0x00, 0xdc, 0x00, 0xcd, 0x04, 0x01, 0x02, 0x01, 0x00, 0xeb, 
  304.     0x00, 0xbe, 0x02, 0x01, 0x00, 0xdd, 0x00, 0xec, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xce, 0x00, 0xed, 0x02, 0x01, 0x00, 0xde, 0x00, 0xee, 
  305.     0x00, 0x0f, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf0, 0x00, 0x1f, 0x00, 0xf1, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf2, 0x00, 0x2f, 0x02, 0x01, 0x00, 0xf3, 
  306.     0x00, 0x3f, 0x12, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf4, 0x00, 0x4f, 0x02, 0x01, 0x00, 0xf5, 0x00, 0x5f, 0x04, 0x01, 0x02, 0x01, 
  307.     0x00, 0xf6, 0x00, 0x6f, 0x02, 0x01, 0x00, 0xf7, 0x02, 0x01, 0x00, 0x7f, 0x00, 0x8f, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf8, 0x00, 0xf9, 
  308.     0x04, 0x01, 0x02, 0x01, 0x00, 0x9f, 0x00, 0xaf, 0x00, 0xfa, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xfb, 0x00, 0xbf, 0x02, 0x01, 0x00, 0xfc, 
  309.     0x00, 0xcf, 0x04, 0x01, 0x02, 0x01, 0x00, 0xfd, 0x00, 0xdf, 0x02, 0x01, 0x00, 0xfe, 0x00, 0xef, 
  310. };
  311.  
  312. /*
  313. const byte hufftbl_32[][2]={
  314.     0x02, 0x01, 0x00, 0x00, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x08, 0x00, 0x04, 0x02, 0x01, 0x00, 0x01, 0x00, 0x02, 0x08, 0x01, 0x04, 0x01, 
  315.     0x02, 0x01, 0x00, 0x0c, 0x00, 0x0a, 0x02, 0x01, 0x00, 0x03, 0x00, 0x06, 0x06, 0x01, 0x02, 0x01, 0x00, 0x09, 0x02, 0x01, 0x00, 0x05, 0x00, 0x07, 
  316.     0x04, 0x01, 0x02, 0x01, 0x00, 0x0e, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x0f, 0x00, 0x0b, 
  317. };
  318.  
  319. const byte hufftbl_33[][2]={
  320.     0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, 0x00, 0x02, 0x00, 0x03, 0x04, 0x01, 0x02, 0x01, 0x00, 0x04, 
  321.     0x00, 0x05, 0x02, 0x01, 0x00, 0x06, 0x00, 0x07, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x08, 0x00, 0x09, 0x02, 0x01, 0x00, 0x0a, 0x00, 0x0b, 
  322.     0x04, 0x01, 0x02, 0x01, 0x00, 0x0c, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x0e, 0x00, 0x0f, 
  323. };
  324. */
  325.  
  326. // These are for count1 decoding; they're value/bit instead of tree form
  327.  
  328. const byte hufftbl_32[64][2]={
  329.     11,6,                            // 000000 -> 11
  330.     15,6,                            // 000001 -> 15
  331.     13,6,                            // 000010 -> 13
  332.     14,6,                            // 000011 -> 14
  333.     7, 6,                            // 000100 -> 7
  334.     6, 6,                            // 000101 -> 5
  335.  
  336.     9, 5,    9, 5,                    // 00011 -> 9
  337.     6, 5,    6, 5,                    // 00100 -> 6
  338.     3, 5,    3, 5,                    // 00101 -> 3
  339.     10,5,    10,5,                    // 00110 -> 10
  340.     12,5,    12,5,                    // 00111 -> 12
  341.  
  342.     2, 4,    2, 4,    2, 4,    2, 4,    // 0100 -> 2
  343.     1, 4,    1, 4,    1, 4,    1, 4,    // 0101 -> 1
  344.     4, 4,    4, 4,    4, 4,    4, 4,    // 0110 -> 4
  345.     8, 4,    8, 4,    8, 4,    8, 4,    // 0111 -> 8
  346.  
  347.     0, 1,    0, 1,    0, 1,    0, 1,    // 1 -> 0
  348.     0, 1,    0, 1,    0, 1,    0, 1,
  349.     0, 1,    0, 1,    0, 1,    0, 1,
  350.     0, 1,    0, 1,    0, 1,    0, 1,
  351.     0, 1,    0, 1,    0, 1,    0, 1,
  352.     0, 1,    0, 1,    0, 1,    0, 1,
  353.     0, 1,    0, 1,    0, 1,    0, 1,
  354.     0, 1,    0, 1,    0, 1,    0, 1,
  355. };
  356.  
  357. const signed char hufftbl_33[256][4] = {
  358.     {  1,  1,  1,  1 }, {  1,  1,  1, -1 }, {  1,  1, -1,  1 }, {  1,  1, -1, -1 },
  359.     {  1, -1,  1,  1 }, {  1, -1,  1, -1 }, {  1, -1, -1,  1 }, {  1, -1, -1, -1 },
  360.     { -1,  1,  1,  1 }, { -1,  1,  1, -1 }, { -1,  1, -1,  1 }, { -1,  1, -1, -1 },
  361.     { -1, -1,  1,  1 }, { -1, -1,  1, -1 }, { -1, -1, -1,  1 }, { -1, -1, -1, -1 },
  362.     {  1,  1,  1,  0 }, {  1,  1,  1,  0 }, {  1,  1, -1,  0 }, {  1,  1, -1,  0 },
  363.     {  1, -1,  1,  0 }, {  1, -1,  1,  0 }, {  1, -1, -1,  0 }, {  1, -1, -1,  0 },
  364.     { -1,  1,  1,  0 }, { -1,  1,  1,  0 }, { -1,  1, -1,  0 }, { -1,  1, -1,  0 },
  365.     { -1, -1,  1,  0 }, { -1, -1,  1,  0 }, { -1, -1, -1,  0 }, { -1, -1, -1,  0 },
  366.     {  1,  1,  0,  1 }, {  1,  1,  0,  1 }, {  1,  1,  0, -1 }, {  1,  1,  0, -1 },
  367.     {  1, -1,  0,  1 }, {  1, -1,  0,  1 }, {  1, -1,  0, -1 }, {  1, -1,  0, -1 },
  368.     { -1,  1,  0,  1 }, { -1,  1,  0,  1 }, { -1,  1,  0, -1 }, { -1,  1,  0, -1 },
  369.     { -1, -1,  0,  1 }, { -1, -1,  0,  1 }, { -1, -1,  0, -1 }, { -1, -1,  0, -1 },
  370.     {  1,  1,  0,  0 }, {  1,  1,  0,  0 }, {  1,  1,  0,  0 }, {  1,  1,  0,  0 },
  371.     {  1, -1,  0,  0 }, {  1, -1,  0,  0 }, {  1, -1,  0,  0 }, {  1, -1,  0,  0 },
  372.     { -1,  1,  0,  0 }, { -1,  1,  0,  0 }, { -1,  1,  0,  0 }, { -1,  1,  0,  0 },
  373.     { -1, -1,  0,  0 }, { -1, -1,  0,  0 }, { -1, -1,  0,  0 }, { -1, -1,  0,  0 },
  374.     {  1,  0,  1,  1 }, {  1,  0,  1,  1 }, {  1,  0,  1, -1 }, {  1,  0,  1, -1 },
  375.     {  1,  0, -1,  1 }, {  1,  0, -1,  1 }, {  1,  0, -1, -1 }, {  1,  0, -1, -1 },
  376.     { -1,  0,  1,  1 }, { -1,  0,  1,  1 }, { -1,  0,  1, -1 }, { -1,  0,  1, -1 },
  377.     { -1,  0, -1,  1 }, { -1,  0, -1,  1 }, { -1,  0, -1, -1 }, { -1,  0, -1, -1 },
  378.     {  1,  0,  1,  0 }, {  1,  0,  1,  0 }, {  1,  0,  1,  0 }, {  1,  0,  1,  0 },
  379.     {  1,  0, -1,  0 }, {  1,  0, -1,  0 }, {  1,  0, -1,  0 }, {  1,  0, -1,  0 },
  380.     { -1,  0,  1,  0 }, { -1,  0,  1,  0 }, { -1,  0,  1,  0 }, { -1,  0,  1,  0 },
  381.     { -1,  0, -1,  0 }, { -1,  0, -1,  0 }, { -1,  0, -1,  0 }, { -1,  0, -1,  0 },
  382.     {  1,  0,  0,  1 }, {  1,  0,  0,  1 }, {  1,  0,  0,  1 }, {  1,  0,  0,  1 },
  383.     {  1,  0,  0, -1 }, {  1,  0,  0, -1 }, {  1,  0,  0, -1 }, {  1,  0,  0, -1 },
  384.     { -1,  0,  0,  1 }, { -1,  0,  0,  1 }, { -1,  0,  0,  1 }, { -1,  0,  0,  1 },
  385.     { -1,  0,  0, -1 }, { -1,  0,  0, -1 }, { -1,  0,  0, -1 }, { -1,  0,  0, -1 },
  386.     {  1,  0,  0,  0 }, {  1,  0,  0,  0 }, {  1,  0,  0,  0 }, {  1,  0,  0,  0 },
  387.     {  1,  0,  0,  0 }, {  1,  0,  0,  0 }, {  1,  0,  0,  0 }, {  1,  0,  0,  0 },
  388.     { -1,  0,  0,  0 }, { -1,  0,  0,  0 }, { -1,  0,  0,  0 }, { -1,  0,  0,  0 },
  389.     { -1,  0,  0,  0 }, { -1,  0,  0,  0 }, { -1,  0,  0,  0 }, { -1,  0,  0,  0 },
  390.     {  0,  1,  1,  1 }, {  0,  1,  1,  1 }, {  0,  1,  1, -1 }, {  0,  1,  1, -1 },
  391.     {  0,  1, -1,  1 }, {  0,  1, -1,  1 }, {  0,  1, -1, -1 }, {  0,  1, -1, -1 },
  392.     {  0, -1,  1,  1 }, {  0, -1,  1,  1 }, {  0, -1,  1, -1 }, {  0, -1,  1, -1 },
  393.     {  0, -1, -1,  1 }, {  0, -1, -1,  1 }, {  0, -1, -1, -1 }, {  0, -1, -1, -1 },
  394.     {  0,  1,  1,  0 }, {  0,  1,  1,  0 }, {  0,  1,  1,  0 }, {  0,  1,  1,  0 },
  395.     {  0,  1, -1,  0 }, {  0,  1, -1,  0 }, {  0,  1, -1,  0 }, {  0,  1, -1,  0 },
  396.     {  0, -1,  1,  0 }, {  0, -1,  1,  0 }, {  0, -1,  1,  0 }, {  0, -1,  1,  0 },
  397.     {  0, -1, -1,  0 }, {  0, -1, -1,  0 }, {  0, -1, -1,  0 }, {  0, -1, -1,  0 },
  398.     {  0,  1,  0,  1 }, {  0,  1,  0,  1 }, {  0,  1,  0,  1 }, {  0,  1,  0,  1 },
  399.     {  0,  1,  0, -1 }, {  0,  1,  0, -1 }, {  0,  1,  0, -1 }, {  0,  1,  0, -1 },
  400.     {  0, -1,  0,  1 }, {  0, -1,  0,  1 }, {  0, -1,  0,  1 }, {  0, -1,  0,  1 },
  401.     {  0, -1,  0, -1 }, {  0, -1,  0, -1 }, {  0, -1,  0, -1 }, {  0, -1,  0, -1 },
  402.     {  0,  1,  0,  0 }, {  0,  1,  0,  0 }, {  0,  1,  0,  0 }, {  0,  1,  0,  0 },
  403.     {  0,  1,  0,  0 }, {  0,  1,  0,  0 }, {  0,  1,  0,  0 }, {  0,  1,  0,  0 },
  404.     {  0, -1,  0,  0 }, {  0, -1,  0,  0 }, {  0, -1,  0,  0 }, {  0, -1,  0,  0 },
  405.     {  0, -1,  0,  0 }, {  0, -1,  0,  0 }, {  0, -1,  0,  0 }, {  0, -1,  0,  0 },
  406.     {  0,  0,  1,  1 }, {  0,  0,  1,  1 }, {  0,  0,  1,  1 }, {  0,  0,  1,  1 },
  407.     {  0,  0,  1, -1 }, {  0,  0,  1, -1 }, {  0,  0,  1, -1 }, {  0,  0,  1, -1 },
  408.     {  0,  0, -1,  1 }, {  0,  0, -1,  1 }, {  0,  0, -1,  1 }, {  0,  0, -1,  1 },
  409.     {  0,  0, -1, -1 }, {  0,  0, -1, -1 }, {  0,  0, -1, -1 }, {  0,  0, -1, -1 },
  410.     {  0,  0,  1,  0 }, {  0,  0,  1,  0 }, {  0,  0,  1,  0 }, {  0,  0,  1,  0 },
  411.     {  0,  0,  1,  0 }, {  0,  0,  1,  0 }, {  0,  0,  1,  0 }, {  0,  0,  1,  0 },
  412.     {  0,  0, -1,  0 }, {  0,  0, -1,  0 }, {  0,  0, -1,  0 }, {  0,  0, -1,  0 },
  413.     {  0,  0, -1,  0 }, {  0,  0, -1,  0 }, {  0,  0, -1,  0 }, {  0,  0, -1,  0 },
  414.     {  0,  0,  0,  1 }, {  0,  0,  0,  1 }, {  0,  0,  0,  1 }, {  0,  0,  0,  1 },
  415.     {  0,  0,  0,  1 }, {  0,  0,  0,  1 }, {  0,  0,  0,  1 }, {  0,  0,  0,  1 },
  416.     {  0,  0,  0, -1 }, {  0,  0,  0, -1 }, {  0,  0,  0, -1 }, {  0,  0,  0, -1 },
  417.     {  0,  0,  0, -1 }, {  0,  0,  0, -1 }, {  0,  0,  0, -1 }, {  0,  0,  0, -1 },
  418.     {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 },
  419.     {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 },
  420.     {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 },
  421.     {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 },
  422. };
  423.  
  424. static const struct hufftab_t {
  425.     int treelen;
  426.     int xlen, ylen;
  427.     int linbits;
  428.     const byte (*val)[2];
  429. } tables[]={
  430.     {   7,  2,  2,  0, hufftbl_1 },
  431.     {  17,  3,  3,  0, hufftbl_2 },
  432.     {  17,  3,  3,  0, hufftbl_3 },
  433.     {   0,  0,  0,  0, NULL },
  434.     {  31,  4,  4,  0, hufftbl_5 },
  435.     {  31,  4,  4,  0, hufftbl_6 },
  436.     {  71,  6,  6,  0, hufftbl_7 },
  437.     {  71,  6,  6,  0, hufftbl_8 },
  438.     {  71,  6,  6,  0, hufftbl_9 },
  439.     { 127,  8,  8,  0, hufftbl_10 },
  440.     { 127,  8,  8,  0, hufftbl_11 },
  441.     { 127,  8,  8,  0, hufftbl_12 },
  442.     { 511, 16, 16,  0, hufftbl_13 },
  443.     {   0,  0,  0,  0, NULL },
  444.     { 511, 16, 16,  0, hufftbl_15 },
  445.     { 511, 16, 16,  1, hufftbl_16 },
  446.     { 511, 16, 16,  2, hufftbl_16 },
  447.     { 511, 16, 16,  3, hufftbl_16 },
  448.     { 511, 16, 16,  4, hufftbl_16 },
  449.     { 511, 16, 16,  6, hufftbl_16 },
  450.     { 511, 16, 16,  8, hufftbl_16 },
  451.     { 511, 16, 16, 10, hufftbl_16 },
  452.     { 511, 16, 16, 13, hufftbl_16 },
  453.     { 512, 16, 16,  4, hufftbl_24 },
  454.     { 512, 16, 16,  5, hufftbl_24 },
  455.     { 512, 16, 16,  6, hufftbl_24 },
  456.     { 512, 16, 16,  7, hufftbl_24 },
  457.     { 512, 16, 16,  8, hufftbl_24 },
  458.     { 512, 16, 16,  9, hufftbl_24 },
  459.     { 512, 16, 16, 11, hufftbl_24 },
  460.     { 512, 16, 16, 13, hufftbl_24 },
  461. };
  462.  
  463. #define MXOFF (250)
  464.  
  465. //unsigned long dmask = 1 << (4*8-1);
  466.  
  467. static const byte bitcnts[16]={ 8, 7, 7, 6, 7, 6, 6, 5, 7, 6, 6, 5, 6, 5, 5, 4 };
  468. static const byte bitcnts2[16]={ 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
  469.  
  470. int AMPDecoder::L3_GetHuffmanCount1_32(long *is, int i, int bit_threshold) {
  471.  
  472.     int point;
  473.     int y;
  474.  
  475.     /* Lookup in Huffman table. */
  476.  
  477.     while(i<=18*32-4 && tellbits() > bit_threshold) {
  478.         point = peekbits2(6);
  479.  
  480.         if (point >= 32) {
  481.             is[0] = is[1] = is[2] = is[3] = 0;
  482.             skipbit();
  483.         } else if (point >= 16) {
  484.             static int tbl[8]={ 0, 0, 0, 0, 3, 2, 0, 1 };
  485.  
  486.             y = 1;
  487.             if (point & 2)
  488.                 y = -1;
  489.  
  490.             skipbits(5);
  491.  
  492.             is[0] = is[1] = is[2] = is[3] = 0;
  493.             is[tbl[point>>2]] = y;
  494.  
  495.         } else {
  496.             y = hufftbl_32[point][0];
  497.             skipbits(hufftbl_32[point][1]);
  498.  
  499.             is[0] = is[1] = is[2] = is[3] = 0;
  500.  
  501.             if (y&8) {
  502.                 is[0] = 1;
  503.                 if (getflag())
  504.                     is[0] = -1;
  505.             }
  506.             if (y&4) {
  507.                 is[1] = 1;
  508.                 if (getflag())
  509.                     is[1] = -1;
  510.             }
  511.             if (y&2) {
  512.                 is[2] = 1;
  513.                 if (getflag())
  514.                     is[2] = -1;
  515.             }
  516.             if (y&1) {
  517.                 is[3] = 1;
  518.                 if (getflag())
  519.                     is[3] = -1;
  520.             }
  521.         }
  522.  
  523.         is += 4;
  524.         i += 4;
  525.     }
  526.  
  527.     return i;
  528. }
  529.  
  530. int AMPDecoder::L3_GetHuffmanCount1_33(long *is, int i, int bit_threshold) {
  531.     int y;
  532.  
  533.     while(i<=18*32-4 && tellbits() > bit_threshold) {
  534.         const signed char *tblptr;
  535.  
  536.         y = peekbits(8);
  537.         skipbits(bitcnts[y>>4]);
  538.  
  539.         tblptr = &hufftbl_33[y][0];
  540.  
  541.         is[0] = tblptr[0];
  542.         is[1] = tblptr[1];
  543.         is[2] = tblptr[2];
  544.         is[3] = tblptr[3];
  545.  
  546.         is += 4;
  547.         i += 4;
  548.     }
  549.  
  550.     return i;
  551. }
  552.  
  553. void AMPDecoder::L3_GetHuffmanBig(int table_id, long *is, int count) {
  554.  
  555.     const struct hufftab_t *h = &tables[table_id - 1];
  556.     int point;
  557.     int error;
  558.     int i;
  559.     int delta;
  560.  
  561.     if (h->val == NULL)
  562.         return;
  563.     
  564.     // Extract all huffman codes.
  565.  
  566.     if (table_id < 24)
  567.         for(; count>0; count-=2) {
  568.  
  569.             /* Lookup in Huffman table. */
  570.  
  571.             point = 0;
  572.             error = 1;
  573.             do {
  574.                 if (h->val[point][0]==0) {   /*end of tree*/
  575.                     is[0] = h->val[point][1] >> 4;
  576.                     is[1] = h->val[point][1] & 0xf;
  577.                     
  578.                     error = 0;
  579.                     break;
  580.                 } 
  581.                 if (getflag())
  582.                     point += h->val[point][1];
  583.                 else
  584.                     point += h->val[point][0];
  585.             } while (point < h->treelen);
  586.  
  587.             /* Check for error. */
  588.             
  589.             if (error) { /* set x and y to a medium value as a simple concealment */
  590.         //        printf("Illegal Huffman code in data.\n");
  591.                 is[0] = (h->xlen-1 << 1);
  592.                 is[1] = (h->ylen-1 << 1);
  593.             }
  594.                     
  595.             /* x and y are reversed in the test bitstream.
  596.                 Reverse x and y here to make test bitstream work. */
  597.                 
  598.             if (h->linbits)
  599.                 if ((h->xlen-1) == is[0]) 
  600.                     is[0] += getbits(h->linbits);
  601.  
  602.             if (is[0])
  603.                 if (getflag()) is[0] = -is[0];
  604.  
  605.             if (h->linbits)      
  606.                 if ((h->ylen-1) == is[1])
  607.                     is[1] += getbits(h->linbits);
  608.  
  609.             if (is[1])
  610.                 if (getflag()) is[1] = -is[1];
  611.  
  612.             is += 2;
  613.         }
  614.     else
  615.         for(; count>0; count-=2) {
  616.  
  617.             // Lookup in Huffman table.
  618.             //
  619.             // Table 24 has some chained jumps (distance MXOFF).
  620.  
  621.             point = 0;
  622.             error = 1;
  623.             do {
  624.                 if (h->val[point][0]==0) {   /*end of tree*/
  625.                     is[0] = h->val[point][1] >> 4;
  626.                     is[1] = h->val[point][1] & 0xf;
  627.                     
  628.                     error = 0;
  629.                     break;
  630.                 } 
  631.                 if (getflag()) {
  632.                     do {
  633.                         point += delta = h->val[point][1];
  634.                     } while(delta >= MXOFF);
  635.                 }
  636.                 else {
  637.                     do {
  638.                         point += delta = h->val[point][0];
  639.                     } while(delta >= MXOFF);
  640.                 }
  641.             } while (point < h->treelen);
  642.  
  643.             /* Check for error. */
  644.             
  645.             if (error) { /* set x and y to a medium value as a simple concealment */
  646.         //        printf("Illegal Huffman code in data.\n");
  647.                 is[0] = (h->xlen-1 << 1);
  648.                 is[1] = (h->ylen-1 << 1);
  649.             }
  650.                     
  651.             /* x and y are reversed in the test bitstream.
  652.                 Reverse x and y here to make test bitstream work. */
  653.                 
  654.             if (h->linbits)
  655.                 if ((h->xlen-1) == is[0]) 
  656.                     is[0] += getbits(h->linbits);
  657.  
  658.             if (is[0])
  659.                 if (getflag()) is[0] = -is[0];
  660.  
  661.             if (h->linbits)      
  662.                 if ((h->ylen-1) == is[1])
  663.                     is[1] += getbits(h->linbits);
  664.  
  665.             if (is[1])
  666.                 if (getflag()) is[1] = -is[1];
  667.  
  668.             is += 2;
  669.         }
  670. }
  671.  
  672.